"""
列表的使用
"""

# 列表的简单使用
name_list = ['Blue', 'Yui', 'Oracle', 'Python', 'Java']
print(name_list)
print(type(name_list))
print()

# 列表里面的元素可以是不同的
other_list = ['Name', 123, True]
print(other_list)
print(type(other_list))
print()

# 列表里面可以嵌套列表
number_list = [[0, 1, 2], [3, 4, 5], [6, 7, 8]]
print(number_list)
print(type(number_list))
print()

# 使用列表索引从列表中取出元素
name_list = ['Blue', 'Yui', 'Oracle', 'Python', 'Java']
print(name_list[0], end=' ')
print(name_list[1], end=' ')
print(name_list[2], end=' ')
print(name_list[3], end=' ')
print()

# 通过下标索引取数据时, 不能超出列表的范围
# IndexError: list index out of range
# print(name_list[4], end=' ')

# 使用列表索引从列表中取出元素(倒序取出)
print(name_list[-1], end=' ')
print(name_list[-2], end=' ')
print(name_list[-3], end=' ')
print(name_list[-4], end=' ')
print()
print()

# 取出嵌套列表的元素
number_list = [[0, 1, 2], [3, 4, 5], [6, 7, 8]]
print(number_list[1][1])
print()

# 查询某元素的下标值： list.index(element) 查询的 element 在列表中必须存在
name_list = ['Blue', 'Yui', 'Oracle', 'Python']
print(name_list.index('Blue'), end=' ')
print(name_list.index('Yui'), end=' ')
print(name_list.index('Oracle'), end=' ')
print(name_list.index('Python'))
print()
# 如果被查询的元素不在列表中, 则程序会报错
# ValueError: 'Hello' is not in list
# print(name_list.index('Hello'))

# 修改特定位置(索引)的元素值: list[index] = element 通过 index 索引取数据时, 不能超出列表的范围
name_list[1] = 'Yun'
name_list[-1] = 'Java'
print(f'列表被修改元素值后, 结果为: {name_list}')
print()

# 在指定下标位置插入新元素: list.insert(index, element)
name_list.insert(2, 'C++')
name_list.insert(3, 'C')
print(f'列表插入元素后, 结果为: {name_list}')
print()

# 在列表的尾部追加新元素
name_list = ['Blue', 'Yui', 'Oracle', 'Python', 'Java']
name_list.append('Vue')
name_list.append('React')
print(f'列表尾插元素后, 结果为: {name_list}')
print()

# 在列表的尾部追加一批新元素
name_list = ['Blue', 'Yui', 'Oracle', 'Python', 'Java']
name_list.extend(['HTML', 'CSS', 'JavaScript'])
print(f'列表尾插一批元素后, 结果为: {name_list}')
print()

# 删除列表指定下标索引的元素
name_list = ['Blue', 'Yui', 'Oracle', 'Python', 'Java']
# 方式一: del list[index] 删除指定下标的元素(删除对应下标不能超过列表长度)
del name_list[2]
print(f'列表删除一个元素后的结果为: {name_list}')
print()

# 方式二: element = list.pop(index) 取出指定下标的元素(删除对应下标不能超过列表长度)
element = name_list.pop(3)
print(f'列表删除一个元素后的结果为: {name_list} 列表删除的元素为: {element}')

# 方式三: list.remove(element) 删除指定的元素(删除对应的元素在列表中必须存在)
name_list.remove('Python')
print(f'列表删除一个元素后的结果为: {name_list}')
print()

# 清空列表内容: list.clear()
name_list = ['Blue', 'Yui', 'Oracle', 'Python', 'Java']
name_list.clear()
print(f'列表清空后的结果为:{name_list}')
print()

# 统计某元素在列表中的数量: list.count(element)
name_list = ['Blue', 'Yui', 'Oracle', 'Python', 'Blue', 'Java']
print(f'列表中 Blue 的数量为: {name_list.count("Blue")}')
print()

# 统计列表中的元素数量: len(list)
name_list = ['Blue', 'Yui', 'Oracle', 'Python', 'Java']
print(f'列表中的元素数量为: {len(name_list)}')
print()

# for 循环遍历列表
name_list = ['Blue', 'Yui', 'Oracle', 'Python', 'Java']
print('name_list 中的元素为: ', end='')
for element in name_list:
    print(element, end=' ')
print()
print()

# while 循环遍历列表
name_list = ['Blue', 'Yui', 'Oracle', 'Python', 'Java']
print('name_list 中的元素为: ', end='')
index = 0
while index < len(name_list):
    element = name_list[index]
    print(element, end=' ')
    index += 1
print()
print()
